@@ -1,5 +1,6 @@ |
||
1 | 1 |
# encoding: utf-8 |
2 | 2 |
require "mqtt" |
3 |
+require "json" |
|
3 | 4 |
|
4 | 5 |
module Agents |
5 | 6 |
class MqttAgent < Agent |
@@ -56,6 +57,27 @@ module Agents |
||
56 | 57 |
|
57 | 58 |
MD |
58 | 59 |
|
60 |
+ event_description <<-MD |
|
61 |
+ Events are simply nested MQTT payloads. For example, an MQTT payload for Owntracks |
|
62 |
+ |
|
63 |
+ <pre><code>{ |
|
64 |
+ "topic": "owntracks/kcqlmkgx/Dan", |
|
65 |
+ "message": { |
|
66 |
+ "topic": "owntracks/kcqlmkgx/Galaxy S3 Dan", |
|
67 |
+ "message": { |
|
68 |
+ "_type": "location", |
|
69 |
+ "lat": "-34.849373", |
|
70 |
+ "lon": "138.5218449", |
|
71 |
+ "tst": "1401761484", |
|
72 |
+ "acc": "10.0", |
|
73 |
+ "batt": "71" |
|
74 |
+ }, |
|
75 |
+ "time": 1401771825 |
|
76 |
+}, |
|
77 |
+ "time": 1401771051 |
|
78 |
+ }</code></pre> |
|
79 |
+ MD |
|
80 |
+ |
|
59 | 81 |
def validate_options |
60 | 82 |
# unless options['uid'].present? && |
61 | 83 |
# options['expected_update_period_in_days'].present? |
@@ -103,7 +125,7 @@ module Agents |
||
103 | 125 |
def check |
104 | 126 |
mqtt_client.connect do |c| |
105 | 127 |
c.get(options['topic']) do |topic,message| |
106 |
- create_event :payload => { 'topic' => topic, 'message' => message, 'time' => Time.now.to_i } |
|
128 |
+ create_event :payload => { 'topic' => topic, 'message' => JSON.parse(message), 'time' => Time.now.to_i } |
|
107 | 129 |
end |
108 | 130 |
end |
109 | 131 |
end |